# 给定一个非空字符串 s，最多删除一个字符。判断是否能成为回文字符串
# 思路就是双指针然后给一次容错
# 或者遍历所有删除一个字符的情况
# 就是要么字符串是回文，如果不是回文，那么左+1 或者右-1必须是回文，如果不是那么就False
class Solution:
    def validPalindrome(self, s: str) -> bool:
        # 简单的判断一下剩下的部分是不是回文串
        def Palindrome(l,r):
            left,right = l, r
            while left <= right:
                if s[right] != s[left]:
                    return False
                right -= 1
                left += 1
            return True

        l,r = 0, len(s)-1
        while l <= r:
            if s[r] == s[l]:
                r -= 1
                l += 1
            else:
                return Palindrome(l+1,r) or Palindrome(l,r-1)
        return True